# coding:utf-8
from django.db import models


# Create your models here.

# 对应就是一个服务器
class API(models.Model):
    name = models.CharField(max_length=32, verbose_name='服务名称')  # API名称,用于显示
    path = models.CharField(max_length=32, verbose_name='服务根路径', help_text='如：uLink/register，前后不含斜杠')  # API路径,如果是uLink,那么地址为http://localhost/uLink

    class Meta:
        verbose_name = '服务列表'
        verbose_name_plural = '服务列表'

    def __str__(self):
        return self.name


# 对应一个服务器的路由
class Router(models.Model):
    name = models.CharField(max_length=32, verbose_name='方法名称')  # 路由名称,用于显示
    path = models.CharField(max_length=128,
                            verbose_name='方法路径', help_text='如：uLink/register，前后不含斜杠')  # 路由路径,如果对应的API.path是uLink,router.path为register,那么地址为http://localhost/uLink/register
    api = models.ForeignKey(API, verbose_name='服务名称', on_delete=models.CASCADE)  # 隶属的API

    class Meta:
        verbose_name = '方法列表'
        verbose_name_plural = '方法列表'

    def __str__(self):
        return self.api.name + '->' + self.name


# 对应一种响应,一个路由可以有多种不同的响应,随机返回
class Response(models.Model):
    name = models.CharField(max_length=32, verbose_name='响应名称')  # Response名称,用于显示
    json = models.TextField()  # 返回的json内容
    delay = models.IntegerField(verbose_name='响应延迟')  # 服务器延迟多久返回
    router = models.ForeignKey(Router, verbose_name='方法名称', on_delete=models.CASCADE)  # 隶属的路由
    status = models.BooleanField(blank=True,verbose_name='状态',default=True)

    class Meta:
        verbose_name = '响应列表'
        verbose_name_plural = ' 响应列表'

    def __str__(self):
        r = self.router
        a = r.api
        name = a.name + '->' + r.name + '->' + self.name
        return name


# 记录所有的响应
class MockLog(models.Model):
    apipath = models.CharField(max_length=32, verbose_name='服务根路径')
    routerpath = models.CharField(max_length=128, verbose_name='方法路径')
    json = models.TextField()  # 返回的json内容.
    status = models.BooleanField(blank=True, default=True)   #该记录是否有效
    creattime = models.DateTimeField(auto_now=True)
    class Meta:
        verbose_name = '响应日志'
        verbose_name_plural = '响应日志'

    def __str__(self):
        name = self.apipath + '->' + self.routerpath
        return name
